Autor: Guilherme Ciconi

Introdução ao case

Olá!

A seguir, será apresentado a análise de dados feita para etapa de desafios do processo seletivo para Analista de Dados Jr. na americanas s.a.

Os dados utilizados para essa etapa foram fornecidos pela companhia e se tratam de 3 bases de dados. Nelas temos as seguintes informações:

Para o item 1.a) do desafio que está documentado no diretório 'Teste/Teste - Análise de Dados.pdf', foi feito o upload das 3 bases para o SQL através do site: https://sqliteonline.com. Nessa etapa eu não me preocupei em escrever scripts para insert ou create table pois no site existe a ferramenta de importação e criação de tabelas de uma forma mais prática, além de acreditar que o desafio no dia a dia da área será consultar essas bases no servidor da companhia. Portanto, considere que as bases já estão conectadas ao servidor e iremos fazer consultas para concluir o primeiro passo do case.

As consultas estão descritas nos arquivos de extensão .sql de forma que para concluir o item 1.a), que se refere a unir todas as tabelas em uma base única, optei por utilizar o método FULL OUTER JOIN. Esse método é utilizado para consultar todos os dados das duas tabelas, mesmo que existam correspondências nulas entre elas e, retorna uma tabela "União" das duas tabelas selecionadas.

Os nomes abaixo são referência aos arquivos de consulta que estão na pasta Teste junto as bases:

Enfim, ao executar esses 3 arquivos teremos a base única solicitada e eu atribuí o nome joint_base.csv. Eu preferi não definir chaves primárias ou estrangeiras na estrutura da base de dados em SQL para ser mais prático. Ao analisar as bases é possível visualizar que a chave primária das tabelas poderiam ser UF, Departamento e/ou Item, assim como poderiam também serem chaves estrangeiras. O resultado do FULL OUTER JOIN seria o mesmo, ao menos para o objetivo do item 1.a).

Com a base única construída nos passos anteriores podemos prosseguir para a Análise Exploratória de dados, onde vamos tentar responder os itens 2.a), 2.b) e 2.c) do case. Essa etapa é fundamental e consiste em explorar o banco de dados com o objetivo de descobrir padrões, relações e/ou causalidades nos dados.

Limpeza e correção dos dados

Importando os dados e analisando de forma geral com info() vemos que não há valores nulos em nenhuma coluna e os formatos das variáveis não fazem sentido para certas colunas. Exemplo: variáveis como faturamento, custo, lucros são variáveis quantitativas de escala contínua e estão em formato object o que impossibilita uma análise numérica dessas variáveis.

Antes de começar a procurar padrões e relações precisamos ter certeza de que os dados estão no formato correto. Para isso vamos importar a base de dados joint_base, printar as informações e visualizar a base

Logo percebe-se que precisamos substituir caracteres em algumas colunas e corrigir os tipos de dados

Análise exploratória dos dados

Eu gosto de começar essa parte com describe(), com esse método podemos ver um pouco sobre como os dados estão distribuídos a partir de quantidade, média, desvio padrão, valor mínimo e máximo além dos quartis. A partir daqui vamos começar de fato a tentar responder os itens 2.a), 2.b) e 2.c) do case:

A seguir veremos que o maior faturamento e maior lucro em termos absolutos vem do departamento de "Máquinas fotográficas", porém, ao analisar a rentabilidade de cada departamento, identificamos que "Bolas de Gude" é o departamento mais rentável. Em outras palavras, "Bolas de Gude" tem o custo total muito menor que os outros departamentos fazendo com que a margem de lucro seja equivalentemente maior.

Análise bivariada

Para esse item iremos iniciar uma análise exploratória bivariada. objetivo da análise bivariada é distribuir pares de variáveis entre si para descobrir como elas se relacionam. Uma forma muito útil de fazer essa análise é plotando um heatmap. O heatmap é um gráfico que mostra a correlação entre as variáveis duas a duas, a correlação calculada por default é a correlação de Pearson.

A correlação de Pearson procura por padrões lineares nas relações e é mensurada dentro do intervalo de -1 a 1. Onde -1 representa forte correlação negativa (à medida que o valor de uma variável cresce, o valor da outra decresce), 0 representa nenhuma relação e, 1 representa forte correlação positiva (à medida que o valor de uma variável cresce, o valor da outra também cresce).

A partir desse heatmap é possível observar que:

Também é possível observar mais: desconto em produtos aumenta o custo total, custo total diminui com o aumento de visitas (talvez devido a tráfego orgânico?), número de vendas aumentam com o número de visitas, entre outras.

Abaixo veremos as distribuições de algumas variáveis para analisar o comportamento delas nos gráficos de dispersão.

Observe que as relações de custos com número de vendas têm um padrão mais próximo do linear do que as relações de custos com o lucro.

Um questionamento que me surgiu ao analisar esses dados: O modelo de precificação dos produtos da companhia está otimizado para a margem de lucro?

Respondendo ao item 2.b): Foi observado através do heatmap, que descontos em produtos são mais efetivos em aumentar o faturamento seguido por desconto em frete e por último aumento com gasto em marketing. Portanto, minha sugestão é investir em desconto em produtos.

Analisar o comportamento de algumas colunas com relação ao tempo reforça algumas das afirmações que fizemos até aqui, um exemplo disso é que no período entre 2018-06 e 2018-07 houve um aumento de mais de 300% em custos de marketing e o número de vendas aumentou em 125%.

Entretanto, a amostra que temos não é suficientemente grande ou completa para analisar séries temporais.

Através do estudo de séries poderíamos entender melhor o comportamento das variáveis através do tempo. Será que o aumento de custo em marketing e a relação com o número de vendas é uma sazonalidade? poderíamos suavizar essa curva para descobrir o padrão básico da série?

Isso nos leva para o próximo item do case:

Pesquisei alguns dados para tentar concluir o item 3.a) mas confesso que não entendi muito bem como concluir essa tarefa, devo encontrar um banco de dados com colunas idênticas para agregar aos dados? Até tentei gerar alguns dados por simulação, mas não consegui gerar uma amostra condizente. Se possível, gostaria de levar minha dúvida desse item para um bate papo e entender melhor.

Se a amostra que foi dada fosse maior, além de séries temporais mencionadas anteriormente, poderíamos analisar se os dados seguem alguma distribuição conhecida, ou então se a amostra converge para uma distribuição normal, confirmar ou não o teorema do limite central e partir para testes paramétricos e análises mais robustas com maior nível de confiança e acurácia.